package com.penghaisoft.microwms.base.web.auth.service;

import com.penghaisoft.microwms.common.page.Pager;
import com.penghaisoft.microwms.common.page.TurnPageInfo;
import com.penghaisoft.microwms.common.base.model.BaseUser;
import com.penghaisoft.microwms.common.base.model.BaseUserExportLog;
import com.penghaisoft.microwms.common.base.model.BaseUserLoginLog;
import com.penghaisoft.microwms.common.dto.Resp;
import java.util.List;

/**
 * @Title: IUserService.java
 * @Description:
 * @author zxcq0
 * @date 2017/2/28 16:24
 * @version V1.0
 */
 
public interface IUserService {

    
    BaseUser queryById(String id);

    BaseUser queryOne(BaseUser user);

    Resp add(BaseUser user);
    
    Resp addUser(BaseUser user);

    Resp update(BaseUser user);

    Resp deleteBatch(List<String> userIds);

    List<BaseUser> queryList(BaseUser condition);

    TurnPageInfo queryListPageInfo(BaseUser condition);

    List<BaseUser> queryUserAll();
    
    /** 
    * @Title: checkLogin 
    * @Description: 账户密码验证
    * @author zhangxu 
    * @2017年6月5日:2017年6月5日:下午2:11:37
    * @param @param condition
    * @param @return    
    * @return BaseUser
    * @version V0.1    
    * @throws 
    */
    BaseUser checkLogin(BaseUser condition);

	/** 
	* @Title: updateUserSysPwd 
	* @Description: 修改用户系统密码
	* @author zhangxu 
	* @2017年8月9日:2017年8月9日:下午3:20:18
	* @param @param baseUser
	* @param @return    
	* @return Resp
	* @version V0.1    
	* @throws 
	*/
	Resp updateUserSysPwd(BaseUser baseUser);

	/** 
	* @Title: updateUserRfPwd 
	* @Description: 修改手持密码
	* @author zhangxu 
	* @2017年8月9日:2017年8月9日:下午3:33:40
	* @param @param baseUser
	* @param @return    
	* @return Resp
	* @version V0.1    
	* @throws 
	*/
	Resp updateUserRfPwd(BaseUser baseUser);
	
	/** 
	* @Title: queryHandLockUserList 
	* @Description: 查询手持用户锁定信息
	* @author zhangxu 
	* @2017年9月1日:2017年9月1日:下午1:24:48
	* @param @param condition
	* @param @return    
	* @return List<BaseUser>
	* @version V0.1    
	* @throws 
	*/
	Pager<BaseUser> queryHandLockUserList(int page, int rows, String factoryCode, List<String> loginNames, BaseUser cond);

	/** 
	* @Title: initPwd 
	* @Description: 密码初始化
	* @author zhangxu 
	* @2017年9月26日:2017年9月26日:下午12:08:53
	* @param @param cond
	* @param @return    
	* @return int
	* @version V0.1    
	* @throws 
	*/
	int initPwd(BaseUser cond);
	
	/** 
	* @Title: addLoginLog 
	* @Description: 记录日志
	* @author zhangxu 
	* @2017年10月17日:2017年10月17日:下午2:13:55
	* @param @param log
	* @param @return    
	* @return Resp
	* @version V0.1    
	* @throws 
	*/
	Resp addLoginLog(BaseUserLoginLog log);
	
	/** 
	* @Title: queryLoginLogList 
	* @Description: 查询登录日志
	* @author zhangxu 
	* @2017年10月17日:2017年10月17日:下午2:14:49
	* @param @param page
	* @param @param rows
	* @param @param cond
	* @param @return    
	* @return Pager<BaseUserLoginLog>
	* @version V0.1    
	* @throws 
	*/
	Pager<BaseUserLoginLog> queryLoginLogList(int page, int rows, BaseUserLoginLog cond);
	
	/** 
	* @Title: addExportLog 
	* @Description: 导出日志
	* @author zhangxu 
	* @2017年10月27日:2017年10月27日:下午5:02:44
	* @param @param log
	* @param @return    
	* @return Resp
	* @version V0.1    
	* @throws 
	*/
	Resp addExportLog(BaseUserExportLog log);
	
	/** 
	* @Title: queryExportLogList 
	* @Description: 查询导出日志
	* @author zhangxu 
	* @2017年10月27日:2017年10月27日:下午5:03:20
	* @param @param page
	* @param @param rows
	* @param @param cond
	* @param @return    
	* @return Pager<BaseUserExportLog>
	* @version V0.1    
	* @throws 
	*/
	Pager<BaseUserExportLog> queryExportLogList(int page, int rows, BaseUserExportLog cond);

	
	/**
	 * 查询工厂下的所有用户
	 * @param factoryCode
	 * @return
	 */
	List<BaseUser> queryUsersUnderFactory(String factoryCode);
	
	/**
	 * cosmo-im添加查询工厂下的所有用户(带分页信息)
	 * @param page
	 * @param rows
	 * @param factoryCode
	 * @return
	 */
	List<BaseUser> queryUsersByFactory(int page, int rows, String factoryCode, BaseUser baseUser);

	List<BaseUser> queryListByLoginName(BaseUser condition);
}
